(()=>{
    // 类类型, 类的类型可以通过接口实现 

    // 定义一个接口
    interface IFly {
        // 该方法没有任何实现
        fly()
    }

    // 定义一个类
    class Person implements IFly {
        fly() {
            console.log('I can fly ')
        }
    }

    const person = new Person()
    person.fly()

    // 定义一个接口
    interface ISwim {
        swim()
    }

    // 定义一个类， 这个类的类型就是 IFly 和 ISwim()
    class Person2 implements IFly, ISwim {
        fly() {
            console.log('flay 2')
        }

        swim() {
            console.log('swim 2')
        }

    }

    const person2 = new Person2()
    person2.fly()
    person2.swim()

    // 总结： 类可以实现多个接口

    // 接口可以继承其他的多个接口
    interface IMyFlyAndSwim extends IFly, ISwim {
        
    }

    class Person3 implements IMyFlyAndSwim {

        fly() {
            console.log('flay 3')
        }

        swim() {
            console.log('swim 3')
        }
    }

    
    const person3 = new Person2()
    person3.fly()
    person3.swim()

    // 总结：
    // 1. 接口和接口之间叫 继承
    // 2. 类和接口之间叫 实现


})()